
import { _decorator, Component, Layers, Node, random, resources, Sprite, SpriteFrame, UITransform } from 'cc';
const { ccclass, property } = _decorator;

//先要知道瓦片信息

import { TileManager } from './TileManager';
import { createUINode, randomByRange } from '../../Utils';
import DataManager from '../../Runtime/DataManager';
import ResourceManager from '../../Runtime/ResourceManager';

export const TILE_WIDTH=55;
export const TILE_HEIGHT=55;


@ccclass('TileMapManager')
export class TileMapManager extends Component {

//生成瓦片
async init(){
    //先拿第一关

    const spriteFrames = await ResourceManager.Instance.loadDir("texture/tile/tile")



    //存好的数据拿出来 
    const {mapInfo} = DataManager.Instance

    DataManager.Instance.tileInfo=[]
    
    for(let i=0;i<mapInfo.length;i++){
        const column=mapInfo[i];
        DataManager.Instance.tileInfo[i]=[]
        for(let j=0;j<column.length;j++){
            const item=column[j];  //拿到每一项
            if(item.src===null||item.type===null){
                continue
            }


            //给他添加脚本
            

            //现在实例化没个瓦片节点
            const node = createUINode()




            randomByRange
            let number=item.src

            //偶数的瓦片做随机显示
            if((number === 1||number===5||number===9) && i%2===0 && j%2===0){
                number+=randomByRange(0,4)
            }

            const imgSrc=`tile (${number})`
            const spriteFrame=spriteFrames.find(v=>v.name===imgSrc) || spriteFrames[0]
            
            //给他添加脚本

            //拿到她的组件实例
            const tm=node.addComponent(TileManager)
            const type=item.type
            tm.init(type,spriteFrame,i,j)


            // node.addComponent(UITransform).setContentSize(TILE_WIDTH,TILE_HEIGHT)
            //设置大小

            //如果想被渲染的话要设置layer
            // node.layer=Layers.Enum.UI_2D;

            // //设置位置，每渲染一个向下跑一个单位
            // node.setPosition(i*TILE_WIDTH,-j*TILE_HEIGHT)
            

            //赋值到数据中心里，保存到数据中心里
            DataManager.Instance.tileInfo[i][j]=tm

            node.setParent(this.node)

            //要用到资源加载，但是cocos资源加载是一个回调函数，所以我们需要封装


        }
    }
}

}


